/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mvc.dao;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import mvc.modelos.HojaDeVida;

/**
 *
 * @author pezcado
 */
public class HojaDeVidaDAO implements IDAO<HojaDeVida> {
    
    private PreparedStatement consultar;
    private PreparedStatement insertar;
    private PreparedStatement modificar;
    private PreparedStatement eliminar;
    private PreparedStatement listar;
    private Model model;
    
    public HojaDeVida consultar(int codigo) throws SQLException {
        model= model.getInstance();
        String sql="select codigo, afiliacionEPS, numeroCarnet, ProgramaAcademico, semestreAcademico, celular, telefono, direccion, "
                + "edad, correo, estadoCivil, estatura, fechaIngresoGrupoCultural, fechaIngresiUniversidad, fechaNacimiento, "
                + "lugarDeNacimiento, integrante_identificacion, nombreIntegrante, nombreMadre, numeroHijos, peso, sexo, tipoSangre,"
                + "promedioAcumuladoCarrera, tiempoPertenerGrupo, SemilleroTaller_GrupoRepresentativo_codigo, historia_Clinica_codigo, "
                + "grupo_Familiar, actividad_Cultural, seguimiento, id, estado, descripcion from Hoja_De_Vida where codigo="+codigo;
        consultar=model.getCon().prepareStatement(sql);
        ResultSet resultSet= consultar.executeQuery();
        HojaDeVida hojaDeVida= new HojaDeVida();
            
        try{
            resultSet.next();
            
            hojaDeVida.setCodigo(resultSet.getInt("codigo"));
            hojaDeVida.setAfiliacionEps(resultSet.getString("afiliacionEPS"));
            hojaDeVida.setNumeroCarnet(resultSet.getInt("numeroCarnet"));
            hojaDeVida.setProgramaAcademico(resultSet.getString("programaAcademico"));
            hojaDeVida.setSemestreAcademico(resultSet.getString("semestreAcademico"));
            hojaDeVida.setCelular(resultSet.getString("celular"));
            hojaDeVida.setTelefono(resultSet.getString("telefono"));
            hojaDeVida.setDireccion(resultSet.getString("direccion"));
            hojaDeVida.setEdad(resultSet.getInt("edad"));
            hojaDeVida.setCorreo(resultSet.getString("correo"));
            hojaDeVida.setEstadoCivil(resultSet.getString("estadoCivil"));
            hojaDeVida.setEstatura(resultSet.getString("estatura"));
            hojaDeVida.setFechaIngresoGrupoCultural(resultSet.getString("fechaIngresoGrupoCultural"));
            hojaDeVida.setFechaIngresoUniversidad(resultSet.getString("fechaIngresiUniversidad"));
            hojaDeVida.setFechaDeNacimiento(resultSet.getString("fechaNacimiento"));
            hojaDeVida.setLugarDeNacimiento(resultSet.getString("lugarDeNacimiento"));
            hojaDeVida.setIntegranteIdentificacion(resultSet.getInt("integrante_identificacion"));
            hojaDeVida.setNombreIntegrante(resultSet.getString("nombreIntegrante"));
            hojaDeVida.setNombreMadre(resultSet.getString("nombreMadre"));
            hojaDeVida.setNumeroDeHijos(resultSet.getInt("numeroHijos"));
            hojaDeVida.setPeso(resultSet.getString("peso"));
            hojaDeVida.setSexo(resultSet.getString("sexo"));
            hojaDeVida.setTipoSangre(resultSet.getString("tipoSangre"));
            hojaDeVida.setPromedioAcumuladoCarrera(resultSet.getString("promedioAcumuladoCarrera"));
            hojaDeVida.setTiempoPertenecerGrupo(resultSet.getString("tiempoPertenerGrupo"));
            hojaDeVida.setSemilleroTaller_GrupoRepresentativo_codigo(resultSet.getInt("SemilleroTaller_GrupoRepresentativo_codigo"));
            hojaDeVida.setHistoriaClinica(resultSet.getInt("historia_Clinica_codigo"));
            hojaDeVida.setGrupoFamiliar(resultSet.getInt("grupo_Familiar"));
            hojaDeVida.setActividadCultural(resultSet.getInt("actividad_Cultural"));
            hojaDeVida.setSeguimiento(resultSet.getInt("seguimiento"));
            hojaDeVida.setId(resultSet.getInt("id"));        
            hojaDeVida.setEstado(resultSet.getString("estado"));
            hojaDeVida.setDescripcion(resultSet.getString("descripcion"));
            
            //return hojaDeVida;
                
        }catch(Exception e ){
            
        }
        return hojaDeVida;
    }
    
    // consultar por nombre la tabla Persona
    public HojaDeVida consultar(String nombre) throws SQLException {
        model= Model.getInstance();
        consultar = model.getCon().prepareStatement("select * from Hoja_De_Vida where lower(nombreIntegrante) like ?;");      // defines la consulta
        consultar.setString(1, "%"+nombre+"%");  // seteas el valor cambiante en la consulta
        ResultSet resultSet= consultar.executeQuery(); // ejecutas y obtienes los registros, pero en un objeto que no sabes maneajar
        HojaDeVida hojaDeVida= new HojaDeVida(); // creas una nueva persona para saber o mas bien para convertir ese registro que desconoces
        
        try{
            resultSet.next();
            
            hojaDeVida.setCodigo(resultSet.getInt("codigo"));
            hojaDeVida.setAfiliacionEps(resultSet.getString("afiliacionEPS"));
            hojaDeVida.setNumeroCarnet(resultSet.getInt("numeroCarnet"));
            hojaDeVida.setProgramaAcademico(resultSet.getString("programaAcademico"));
            hojaDeVida.setSemestreAcademico(resultSet.getString("semestreAcademico"));
            hojaDeVida.setCelular(resultSet.getString("celular"));
            hojaDeVida.setTelefono(resultSet.getString("telefono"));
            hojaDeVida.setDireccion(resultSet.getString("direccion"));
            hojaDeVida.setEdad(resultSet.getInt("edad"));
            hojaDeVida.setCorreo(resultSet.getString("correo"));
            hojaDeVida.setEstadoCivil(resultSet.getString("estadoCivil"));
            hojaDeVida.setEstatura(resultSet.getString("estatura"));
            hojaDeVida.setFechaIngresoGrupoCultural(resultSet.getString("fechaIngresoGrupoCultural"));
            hojaDeVida.setFechaIngresoUniversidad(resultSet.getString("fechaIngresiUniversidad"));
            hojaDeVida.setFechaDeNacimiento(resultSet.getString("fechaNacimiento"));
            hojaDeVida.setLugarDeNacimiento(resultSet.getString("lugarDeNacimiento"));
            hojaDeVida.setIntegranteIdentificacion(resultSet.getInt("integrante_identificacion"));
            hojaDeVida.setNombreIntegrante(resultSet.getString("nombreIntegrante"));
            hojaDeVida.setNombreMadre(resultSet.getString("nombreMadre"));
            hojaDeVida.setNumeroDeHijos(resultSet.getInt("numeroHijos"));
            hojaDeVida.setPeso(resultSet.getString("peso"));
            hojaDeVida.setSexo(resultSet.getString("sexo"));
            hojaDeVida.setTipoSangre(resultSet.getString("tipoSangre"));
            hojaDeVida.setPromedioAcumuladoCarrera(resultSet.getString("promedioAcumuladoCarrera"));
            hojaDeVida.setTiempoPertenecerGrupo(resultSet.getString("tiempoPertenerGrupo"));
            hojaDeVida.setSemilleroTaller_GrupoRepresentativo_codigo(resultSet.getInt("SemilleroTaller_GrupoRepresentativo_codigo"));
            hojaDeVida.setHistoriaClinica(resultSet.getInt("historia_Clinica_codigo"));
            hojaDeVida.setGrupoFamiliar(resultSet.getInt("grupo_Familiar"));
            hojaDeVida.setActividadCultural(resultSet.getInt("actividad_Cultural"));
            hojaDeVida.setSeguimiento(resultSet.getInt("seguimiento"));
            hojaDeVida.setId(resultSet.getInt("id"));        
            hojaDeVida.setEstado(resultSet.getString("estado"));
            hojaDeVida.setDescripcion(resultSet.getString("descripcion"));
            
            
        }catch(Exception e){
            
        }
            
        return hojaDeVida; // si todo salio bien retornas a la persona tal y como la setiastes entoncs mira,
    }
    
    public void insertar(HojaDeVida IDAO) throws SQLException {
        model= model.getInstance();
        if(insertar==null){
            String sql="INSERT INTO Hoja_De_Vida VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
            insertar= model.getCon().prepareStatement(sql);
        }
        
        insertar.setInt(1, IDAO.getCodigo());
        insertar.setString(2, IDAO.getAfiliacionEps());
        insertar.setInt(3, IDAO.getNumeroCarnet());
        insertar.setString(4, IDAO.getProgramaAcademico());
        insertar.setString(5, IDAO.getSemestreAcademico());
        insertar.setString(6, IDAO.getCelular());
        insertar.setString(7, IDAO.getTelefono());
        insertar.setString(8, IDAO.getDireccion());
        insertar.setInt(9, IDAO.getEdad());
        insertar.setString(10, IDAO.getCorreo());
        insertar.setString(11, IDAO.getEstadoCivil());
        insertar.setString(12, IDAO.getEstatura());
        insertar.setString(13, IDAO.getFechaIngresoGrupoCultural());
        insertar.setString(14, IDAO.getFechaIngresoUniversidad());
        insertar.setString(15, IDAO.getFechaDeNacimiento());
        insertar.setString(16, IDAO.getLugarDeNacimiento());
        insertar.setInt(17, IDAO.getIntegranteIdentificacion());
        insertar.setString(18, IDAO.getNombreIntegrante());
        insertar.setString(19, IDAO.getNombreMadre());
        insertar.setInt(20, IDAO.getNumeroDeHijos());
        insertar.setString(21, IDAO.getPeso());
        insertar.setString(22, IDAO.getSexo());
        insertar.setString(23, IDAO.getTipoSangre());
        insertar.setString(24, IDAO.getPromedioAcumuladoCarrera());
        insertar.setString(25, IDAO.getTiempoPertenecerGrupo());
        insertar.setInt(26, IDAO.getSemilleroTaller_GrupoRepresentativo_codigo());
        insertar.setInt(27, IDAO.getHistoriaClinica());
        insertar.setInt(28, IDAO.getGrupoFamiliar());
        insertar.setInt(29, IDAO.getActividadCultural());
        insertar.setInt(30, IDAO.getSeguimiento());
        insertar.setInt(31, IDAO.getId());
        insertar.setString(32, IDAO.getEstado());
        insertar.setString(33, IDAO.getDescripcion());
        
        insertar.executeUpdate();
    }

    public void modificar(HojaDeVida IDAO) throws SQLException {
        model= model.getInstance();
        String sql="Update Hoja_De_Vida set"
                + "afiliacionEPS="+IDAO.getAfiliacionEps()+","
                + "numeroCarnet="+IDAO.getNumeroCarnet()+","
                + "programaAcademico='"+IDAO.getProgramaAcademico()+"',"
                + "semestreAcademico="+IDAO.getSemestreAcademico()+","
                + ""
                + "edad="+IDAO.getEdad()+","
                + "correo='"+IDAO.getCorreo()+"',"
                + "estadoCivil='"+IDAO.getEstadoCivil()+"',"
                + "estatura="+IDAO.getEstatura()+","
                + "fechaIngresoGrupoCultural="+IDAO.getFechaIngresoGrupoCultural()+","
                + "fechaIngresoUniversidad="+IDAO.getFechaIngresoUniversidad()+","
                + "fechaDeNacimiento="+IDAO.getFechaDeNacimiento()+","
                + "lugarDeNacimiento='"+IDAO.getLugarDeNacimiento()+"',"
                //+ "integranteIdentificacion"+IDAO.getIntegranteIdentificacion()+","
                //+ "nombreIntegrante='"+IDAO.getNombreIntegrante()+"',"
                + "nombreMadre='"+IDAO.getNombreMadre()+"',"
                + "numeroDeHijos="+IDAO.getNumeroDeHijos()+","
                + "peso="+IDAO.getPeso()+","
                + "sexo='"+IDAO.getSexo()+"',"
                + "promedioAcumuladoCarrera="+IDAO.getPromedioAcumuladoCarrera()+","
                + "tiempoPertenecerGrupo='"+IDAO.getTiempoPertenecerGrupo()+"',"
                //+ "HistoriaClinica="+IDAO.getHistoriaClinica()+","
                //+ "grupoFamiliar="+IDAO.getGrupoFamiliar()+","
                //+ "actividadCultural="+IDAO.getActividadCultural()+","
                //+ "seguimiento="+IDAO.getSeguimiento()+","
                //+ "id="+IDAO.getId()+","
                + "estado='"+IDAO.getEstado()+"',"
                + "descripcion='"+IDAO.getDescripcion()+"',"
                + "where codigo="+IDAO.getCodigo();
        
        modificar=model.getCon().prepareStatement(sql);
        modificar.executeUpdate();
    }

    public void eliminar(HojaDeVida IDAO) throws SQLException {
        model= model.getInstance();
        String sql="delete from Hoja_De_Vida where codigo="+IDAO.getCodigo();
        eliminar=model.getCon().prepareStatement(sql);
        
        eliminar.executeUpdate();
    }

    public LinkedList<HojaDeVida> listar() throws SQLException {
        model.getInstance();
        LinkedList<HojaDeVida> listaHojasDeVidas= new LinkedList<HojaDeVida>();
        String sql="select codigo, afiliacionEPS, numeroCarnet, ProgramaAcademico, semestreAcademico, celular, telefono, direccion, "
                + "edad, correo, estadoCivil, estatura, fechaIngresoGrupoCultural, fechaIngresiUniversidad, fechaNacimiento, "
                + "lugarDeNacimiento, integrante_identificacion, nombreIntegrante, nombreMadre, numeroHijos, peso, sexo, tipoSangre,"
                + "promedioAcumuladoCarrera, tiempoPertenerGrupo, SemilleroTaller_GrupoRepresentativo_codigo, historia_Clinica_codigo, "
                + "grupo_Familiar, actividad_Cultural, seguimiento, id, estado, descripcion from Hoja_De_Vida";
        
        listar= model.getCon().prepareStatement(sql);
        ResultSet resultSet= listar.executeQuery();
        while(resultSet.next()){
            HojaDeVida hojaDeVida= new HojaDeVida();
            
            hojaDeVida.setCodigo(resultSet.getInt("codigo"));
            hojaDeVida.setAfiliacionEps(resultSet.getString("afiliacionEPS"));
            hojaDeVida.setNumeroCarnet(resultSet.getInt("numeroCarnet"));
            hojaDeVida.setProgramaAcademico(resultSet.getString("programaAcademico"));
            hojaDeVida.setSemestreAcademico(resultSet.getString("semestreAcademico"));
            hojaDeVida.setCelular(resultSet.getString("celular"));
            hojaDeVida.setTelefono(resultSet.getString("telefono"));
            hojaDeVida.setDireccion(resultSet.getString("direccion"));
            hojaDeVida.setEdad(resultSet.getInt("edad"));
            hojaDeVida.setCorreo(resultSet.getString("correo"));
            hojaDeVida.setEstadoCivil(resultSet.getString("estadoCivil"));
            hojaDeVida.setEstatura(resultSet.getString("estatura"));
            hojaDeVida.setFechaIngresoGrupoCultural(resultSet.getString("fechaIngresoGrupoCultural"));
            hojaDeVida.setFechaIngresoUniversidad(resultSet.getString("fechaIngresiUniversidad"));
            hojaDeVida.setFechaDeNacimiento(resultSet.getString("fechaNacimiento"));
            hojaDeVida.setLugarDeNacimiento(resultSet.getString("lugarDeNacimiento"));
            hojaDeVida.setIntegranteIdentificacion(resultSet.getInt("integrante_identificacion"));
            hojaDeVida.setNombreIntegrante(resultSet.getString("nombreIntegrante"));
            hojaDeVida.setNombreMadre(resultSet.getString("nombreMadre"));
            hojaDeVida.setNumeroDeHijos(resultSet.getInt("numeroHijos"));
            hojaDeVida.setPeso(resultSet.getString("peso"));
            hojaDeVida.setSexo(resultSet.getString("sexo"));
            hojaDeVida.setTipoSangre(resultSet.getString("tipoSangre"));
            hojaDeVida.setPromedioAcumuladoCarrera(resultSet.getString("promedioAcumuladoCarrera"));
            hojaDeVida.setTiempoPertenecerGrupo(resultSet.getString("tiempoPertenerGrupo"));
            hojaDeVida.setSemilleroTaller_GrupoRepresentativo_codigo(resultSet.getInt("SemilleroTaller_GrupoRepresentativo_codigo"));
            hojaDeVida.setHistoriaClinica(resultSet.getInt("historia_Clinica_codigo"));
            hojaDeVida.setGrupoFamiliar(resultSet.getInt("grupo_Familiar"));
            hojaDeVida.setActividadCultural(resultSet.getInt("actividad_Cultural"));
            hojaDeVida.setSeguimiento(resultSet.getInt("seguimiento"));
            hojaDeVida.setId(resultSet.getInt("id"));        
            hojaDeVida.setEstado(resultSet.getString("estado"));
            hojaDeVida.setDescripcion(resultSet.getString("descripcion"));
            listaHojasDeVidas.add(hojaDeVida);
            
        }
        return listaHojasDeVidas;
    }
    
}
